This invention relates to an information processing system in which a server computer is connected with an I/O device through a PCI switch, in particular, a technique for virtualizing a server computer and migrating the virtualized server to another physical computer.
In recent years, against a backdrop of an increase in operation management costs due to an increase in the number of servers constituting an IT system and a performance boost for a physical server (physical computer) owing to a CPU multi-core and the like, attention is being given to a technique of server integration for reducing the number of physical servers by using a server virtualization technique for logically dividing one physical server into virtual servers to be operated.
There are several implementation methods for the above-mentioned server virtualization technique, among which a virtualization method using a hypervisor is known as being characterized in that overhead involved in virtualization is small (see, for example, ‘Virtage’ for ‘BladeSymphony,’ a Server Virtualization Feature which Improves Server Management Efficiency”. July, 2007). The server virtualization method disclosed therein includes a hypervisor implemented as firmware for the physical server, and a virtualization assist function implemented as hardware. The hypervisor controls each of virtual servers (virtual computers) on the physical server, and the virtualization assist function converts an address for memory access made by the I/O device. In the server virtualization method disclosed in ‘Virtage’ for ‘BladeSymphony,’ a Server Virtualization Feature which Improves Server Management Efficiency”, the hypervisor allocates an I/O device directly to the virtual server, and hence, the physical server and the virtual server can use the same OS environment. In addition, the hardware-based virtualization assist function performs an address conversion processing for the I/O device, and hence overhead on the address conversion processing involved in an I/O processing can be reduced, thereby improving I/O throughput.
On the other hand, a further performance boost for the physical server owing to the CPU multi-core and the like requires I/O throughput correspondent to performance of the physical server. Promising as a technique for improving the I/O throughput correspondent to the performance of the physical server is a PCI switch that can connect a plurality of I/O devices with respect to a plurality of physical servers.
Further, progress is being made toward standardization of an I/O virtualization technique for providing flexibility to an association between the virtual server and the I/O device by combining the above-mentioned server virtualization technique with the PCI switch (SR/MR-IoV (see Michael Krause, et al. “I/O Virtualization and Sharing”. November, 2006)).
Against such a backdrop, an information processing system in which the server virtualization technique is combined with the PCI switch is regarded as becoming mainstream in the future.
Incidentally, a live migration is one of functions that enhance flexibility and availability of a computer system to which the server virtualization technique is applied (see Christopher Clerk, et al. “Live Migration of Virtual Machines”. May, 2005, NSDI (Networked Systems Design and Implementation)'05).
The live migration is a function for migrating a running virtual server to another physical server. The live migration makes it possible to change a layout of running virtual servers depending on loads on the physical server and save a running virtual server from the physical server that needs maintenance. As a result, it is possible to enhance the flexibility and the availability of the system.
In a case where the live migration is realized in the above-mentioned information processing system in which the server virtualization technique is combined with the PCI switch, it is necessary to retain and take over three states of the running virtual server. The three states are an (a) CPU running state, a (b) memory content, and a (c) I/O device state. The (a) CPU running state can be retained when the hypervisor stops an operation of the virtual server.
However, a general hypervisor cannot stop memory access such as DMA made by the I/O device allocated to the virtual server or a processing for a transaction originated from an external I/O device, and therefore cannot retain the (b) memory content or the (c) I/O device state. Accordingly, in a case where the live migration is realized in the above-mentioned server virtualization technique, it is necessary to eliminate an influence of the running I/O device and retain the (b) memory content and the (c) I/O device state.
There exist several techniques for retaining those states.
Examples thereof include a method disclosed in US 2007/0186025 for a system having physical servers and I/O devices connected with each other through the PCI switch and managed by a PCI manager, in which in order to realize a migration of a virtual I/O device, a processing of a transaction from the I/O device during the migration is stopped.
In US 2007/0186025, the I/O device has a migration bit in its configuration space, and references the migration bit to judge whether or not a migration of the virtual I/O device is being performed.
If the migration is being performed, the I/O device stops its own processing, and inhibits an issuance of a transaction originated from the I/O device and bound for a memory. In addition, if the migration is being performed, the PCI manager saves the transaction within the PCI switch, which is originated from the I/O device and bound for the memory, to a specific storage area, and after the migration is completed, the transaction saved to the storage area is restored.
This prevents the transaction originated from the I/O device and being processed during the migration from rewriting the memory content, and prevents the I/O device state from being changed.
Meanwhile, U.S. Pat. No. 6,496,847 discloses a method in which a virtual server is provided with a device emulator obtained by a host OS emulating an I/O device, and a guest OS on the virtual server uses the device emulator to indirectly access the I/O device.
The host OS recognizes whether or not a migration is being performed, and if the migration is being performed, a processing of the device emulator is stopped to thereby allow the memory content and the I/O device state of the virtual server being migrated to be retained.